package se19team1e.dao.abstrakt.jaas;

import java.util.List;

import se19team1e.dao.abstrakt.generics.DataAccessObject;
import se19team1e.exception.DataAccessException;
import se19team1e.entity.JobResponseDTO;

/**
 * An abstract DAO interface to manipulate the Job Response objects in the
 * persistence storage.
 * 
 * <p>
 * This interface is referenced by controllers, such that the underlying
 * persistence mechanism can be swapped out easily in the future.
 * </p>
 * 
 * @author ivan
 * 
 */

public interface JobResponseDAO extends DataAccessObject<JobResponseDTO> {
	/**
	 * Create the Job Response DAO using interface DataAccessObject
	 * 
	 * @param JobResponseDTO
	 *            The Job Response dto
	 * @throws DataAccessException
	 */
	@Override
	public boolean create(JobResponseDTO dtoType) throws DataAccessException;

	/**
	 * Deletes an existing Job Response object from the persistence storage by
	 * the given id.
	 * 
	 * @param idType
	 *            ID of the Job Response object to be deleted
	 * @return success state
	 * @throws DataAccessException
	 */
	@Override
	public boolean delete(Object idType) throws DataAccessException;

	/**
	 * Retrieve all Job Response objects in the persistence storage.
	 * 
	 * @return list of Job Response DataTransfer objects
	 * @throws DataAccessException
	 */
	@Override
	public List<JobResponseDTO> retrieveAll() throws DataAccessException;

	/**
	 * Gets an existing Job Response object from the persistence storage by the
	 * given id.
	 * 
	 * @param idType
	 *            ID of the Job Response object
	 * @return Object Job Response object specified by the ID
	 * @throws DataAccessException
	 */
	@Override
	public JobResponseDTO retrieveById(Object idType)
			throws DataAccessException;

	/**
	 * Updates the delta of an existing Job Response object to the persistence
	 * storage.
	 * 
	 * @param JobResponseDTO
	 *            dto type is Department
	 * @return Object which is an updated Job Response DTO
	 * @throws DataAccessException
	 */
	@Override
	public JobResponseDTO update(JobResponseDTO dtoType)
			throws DataAccessException;

}
